//
//  LWEmoticonToolBar.swift
//  LW_Weibo
//
//  Created by 刘伟 on 16/7/20.
//  Copyright © 2016年 LWSpro. All rights reserved.
//

import UIKit

//枚举值 按钮点击时传递出去的  代替按钮的tag值 可读性高
enum LWEmoticonToolBarButtonType: Int {
    
    //  枚举的原始值0做为我们视图的tag的时候需要注意
    //  默认
    case Normal = 1000
    //  Emoji
    case Emoji = 1001
    //  浪小花
    case Lxh = 1002

    
    
}



class LWEmoticonToolBar: UIStackView {

   
    //记录点击的按钮  为了取消选中状态
    var currentSelectedBtn: UIButton?
    
    //闭包 传递按钮的tag值 即枚举值
    var selectedToolBarButtonClosure: ((type: LWEmoticonToolBarButtonType)->())?
    
    
    
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    //  添加控件设置布局方式
    private func setupUI() {
        //  设置布局方式
        axis = .Horizontal
        //  设置子控件填充方式  不需要我们布局
        distribution = .FillEqually
        
        addChildButton("默认", imageName: "compose_emotion_table_left", type: .Normal)
        addChildButton("Emoji", imageName: "compose_emotion_table_mid", type: .Emoji)
        addChildButton("浪小花", imageName: "compose_emotion_table_right", type: .Lxh)
        
    }
    
    //  创建子按钮
    private func addChildButton(title: String, imageName: String, type: LWEmoticonToolBarButtonType) {
        
        let button = UIButton()
        
        // 设置tag值,把枚举的原始作为tag
        button.tag = type.rawValue
        
        //  添加事件
        button.addTarget(self, action: "buttonAction:", forControlEvents: .TouchUpInside)
        
        //  设置文字及颜色
        button.setTitle(title, forState: .Normal)
        button.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        button.setTitleColor(UIColor.grayColor(), forState: .Selected)
        button.titleLabel?.font = UIFont.systemFontOfSize(15)
        //  设置背景图片
        button.setBackgroundImage(UIImage(named: imageName + "_normal"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: imageName + "_selected"), forState: .Selected)
        //  取消高亮
        button.adjustsImageWhenHighlighted = false
        
        //添加
        addArrangedSubview(button)
        
    }
    

    //MARK: - 按钮的点击事件
    @objc private func buttonAction(button: UIButton) {
        
        
        commonSEL(button)
        
        //通过tag值  即枚举的原始值(原始值就是Int类型  即等号后面的数字) 获取枚举的成员
        let type = LWEmoticonToolBarButtonType(rawValue: button.tag)!
        
        //执行闭包  回调传值
        selectedToolBarButtonClosure?(type: type)
        
        
    }
    
    
    
    //暴露一个接口给外面 让外面传cell的区域数进来  这样可以找到对应的button
    func selectedButtonWithSection(section: Int) {
        
        let button = viewWithTag(section + 1000) as! UIButton
        
        commonSEL(button)
        
        
    }
    
    
    
    
    private func commonSEL(button: UIButton) {
        
        
        //如果点击是同一个按钮 那么就不执行后面的代码
        if currentSelectedBtn == button {
            
            return
            
        }
        
        //取消选中状态
        currentSelectedBtn?.selected = false
        
        //点击的那个按钮 为选中状态
        button.selected = true
        
        //记录选中的按钮
        currentSelectedBtn = button
        

        
        
        
    }
    
    
}
